/**
 */
package org.mro.grib.model.files.secondEdition.grids.impl;

import java.nio.ByteBuffer;

import org.eclipse.emf.common.notify.Notification;

import org.eclipse.emf.ecore.EClass;

import org.eclipse.emf.ecore.impl.ENotificationImpl;

import org.mro.grib.model.files.secondEdition.grids.GridDefinitionTemplate310;
import org.mro.grib.model.files.secondEdition.grids.GridsPackage;

/**
 * <!-- begin-user-doc -->
 * An implementation of the model object '<em><b>Grid Definition Template310</b></em>'.
 * <!-- end-user-doc -->
 * <p>
 * The following features are implemented:
 * <ul>
 *   <li>{@link org.mro.grib.model.files.secondEdition.grids.impl.GridDefinitionTemplate310Impl#getNumberOfPointsAlongAParallel <em>Number Of Points Along AParallel</em>}</li>
 *   <li>{@link org.mro.grib.model.files.secondEdition.grids.impl.GridDefinitionTemplate310Impl#getNumberOfPointsAlongAMeridian <em>Number Of Points Along AMeridian</em>}</li>
 *   <li>{@link org.mro.grib.model.files.secondEdition.grids.impl.GridDefinitionTemplate310Impl#getLatitudeOfFirstGridPoint <em>Latitude Of First Grid Point</em>}</li>
 *   <li>{@link org.mro.grib.model.files.secondEdition.grids.impl.GridDefinitionTemplate310Impl#getLongitudeOfFirstGridPoint <em>Longitude Of First Grid Point</em>}</li>
 *   <li>{@link org.mro.grib.model.files.secondEdition.grids.impl.GridDefinitionTemplate310Impl#getResolutionAndComponentFlags <em>Resolution And Component Flags</em>}</li>
 *   <li>{@link org.mro.grib.model.files.secondEdition.grids.impl.GridDefinitionTemplate310Impl#getLatitudeOfMercatorProjectionIntersectionWithEarth <em>Latitude Of Mercator Projection Intersection With Earth</em>}</li>
 *   <li>{@link org.mro.grib.model.files.secondEdition.grids.impl.GridDefinitionTemplate310Impl#getLatitudeOfLastGridPoint <em>Latitude Of Last Grid Point</em>}</li>
 *   <li>{@link org.mro.grib.model.files.secondEdition.grids.impl.GridDefinitionTemplate310Impl#getLongitudeOfLastGridPoint <em>Longitude Of Last Grid Point</em>}</li>
 *   <li>{@link org.mro.grib.model.files.secondEdition.grids.impl.GridDefinitionTemplate310Impl#getScanningMode <em>Scanning Mode</em>}</li>
 *   <li>{@link org.mro.grib.model.files.secondEdition.grids.impl.GridDefinitionTemplate310Impl#getOrientationOfTheGrid <em>Orientation Of The Grid</em>}</li>
 *   <li>{@link org.mro.grib.model.files.secondEdition.grids.impl.GridDefinitionTemplate310Impl#getLongitudinalDirectionGridLength <em>Longitudinal Direction Grid Length</em>}</li>
 *   <li>{@link org.mro.grib.model.files.secondEdition.grids.impl.GridDefinitionTemplate310Impl#getLatitudinalDirectionGridLength <em>Latitudinal Direction Grid Length</em>}</li>
 *   <li>{@link org.mro.grib.model.files.secondEdition.grids.impl.GridDefinitionTemplate310Impl#getListOfNumberOfPointsOffset <em>List Of Number Of Points Offset</em>}</li>
 * </ul>
 * </p>
 *
 * @generated
 */
public class GridDefinitionTemplate310Impl extends EarthShapeGridDefinitionImpl implements GridDefinitionTemplate310 {
	/**
	 * The default value of the '{@link #getNumberOfPointsAlongAParallel() <em>Number Of Points Along AParallel</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getNumberOfPointsAlongAParallel()
	 * @generated
	 * @ordered
	 */
	protected static final int NUMBER_OF_POINTS_ALONG_APARALLEL_EDEFAULT = 0;

	/**
	 * The cached value of the '{@link #getNumberOfPointsAlongAParallel() <em>Number Of Points Along AParallel</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getNumberOfPointsAlongAParallel()
	 * @generated
	 * @ordered
	 */
	protected int numberOfPointsAlongAParallel = NUMBER_OF_POINTS_ALONG_APARALLEL_EDEFAULT;

	/**
	 * The default value of the '{@link #getNumberOfPointsAlongAMeridian() <em>Number Of Points Along AMeridian</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getNumberOfPointsAlongAMeridian()
	 * @generated
	 * @ordered
	 */
	protected static final int NUMBER_OF_POINTS_ALONG_AMERIDIAN_EDEFAULT = 0;

	/**
	 * The cached value of the '{@link #getNumberOfPointsAlongAMeridian() <em>Number Of Points Along AMeridian</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getNumberOfPointsAlongAMeridian()
	 * @generated
	 * @ordered
	 */
	protected int numberOfPointsAlongAMeridian = NUMBER_OF_POINTS_ALONG_AMERIDIAN_EDEFAULT;

	/**
	 * The default value of the '{@link #getLatitudeOfFirstGridPoint() <em>Latitude Of First Grid Point</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getLatitudeOfFirstGridPoint()
	 * @generated
	 * @ordered
	 */
	protected static final int LATITUDE_OF_FIRST_GRID_POINT_EDEFAULT = 0;

	/**
	 * The cached value of the '{@link #getLatitudeOfFirstGridPoint() <em>Latitude Of First Grid Point</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getLatitudeOfFirstGridPoint()
	 * @generated
	 * @ordered
	 */
	protected int latitudeOfFirstGridPoint = LATITUDE_OF_FIRST_GRID_POINT_EDEFAULT;

	/**
	 * The default value of the '{@link #getLongitudeOfFirstGridPoint() <em>Longitude Of First Grid Point</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getLongitudeOfFirstGridPoint()
	 * @generated
	 * @ordered
	 */
	protected static final int LONGITUDE_OF_FIRST_GRID_POINT_EDEFAULT = 0;

	/**
	 * The cached value of the '{@link #getLongitudeOfFirstGridPoint() <em>Longitude Of First Grid Point</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getLongitudeOfFirstGridPoint()
	 * @generated
	 * @ordered
	 */
	protected int longitudeOfFirstGridPoint = LONGITUDE_OF_FIRST_GRID_POINT_EDEFAULT;

	/**
	 * The default value of the '{@link #getResolutionAndComponentFlags() <em>Resolution And Component Flags</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getResolutionAndComponentFlags()
	 * @generated
	 * @ordered
	 */
	protected static final byte RESOLUTION_AND_COMPONENT_FLAGS_EDEFAULT = 0x00;

	/**
	 * The cached value of the '{@link #getResolutionAndComponentFlags() <em>Resolution And Component Flags</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getResolutionAndComponentFlags()
	 * @generated
	 * @ordered
	 */
	protected byte resolutionAndComponentFlags = RESOLUTION_AND_COMPONENT_FLAGS_EDEFAULT;

	/**
	 * The default value of the '{@link #getLatitudeOfMercatorProjectionIntersectionWithEarth() <em>Latitude Of Mercator Projection Intersection With Earth</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getLatitudeOfMercatorProjectionIntersectionWithEarth()
	 * @generated
	 * @ordered
	 */
	protected static final int LATITUDE_OF_MERCATOR_PROJECTION_INTERSECTION_WITH_EARTH_EDEFAULT = 0;

	/**
	 * The cached value of the '{@link #getLatitudeOfMercatorProjectionIntersectionWithEarth() <em>Latitude Of Mercator Projection Intersection With Earth</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getLatitudeOfMercatorProjectionIntersectionWithEarth()
	 * @generated
	 * @ordered
	 */
	protected int latitudeOfMercatorProjectionIntersectionWithEarth = LATITUDE_OF_MERCATOR_PROJECTION_INTERSECTION_WITH_EARTH_EDEFAULT;

	/**
	 * The default value of the '{@link #getLatitudeOfLastGridPoint() <em>Latitude Of Last Grid Point</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getLatitudeOfLastGridPoint()
	 * @generated
	 * @ordered
	 */
	protected static final int LATITUDE_OF_LAST_GRID_POINT_EDEFAULT = 0;

	/**
	 * The cached value of the '{@link #getLatitudeOfLastGridPoint() <em>Latitude Of Last Grid Point</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getLatitudeOfLastGridPoint()
	 * @generated
	 * @ordered
	 */
	protected int latitudeOfLastGridPoint = LATITUDE_OF_LAST_GRID_POINT_EDEFAULT;

	/**
	 * The default value of the '{@link #getLongitudeOfLastGridPoint() <em>Longitude Of Last Grid Point</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getLongitudeOfLastGridPoint()
	 * @generated
	 * @ordered
	 */
	protected static final int LONGITUDE_OF_LAST_GRID_POINT_EDEFAULT = 0;

	/**
	 * The cached value of the '{@link #getLongitudeOfLastGridPoint() <em>Longitude Of Last Grid Point</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getLongitudeOfLastGridPoint()
	 * @generated
	 * @ordered
	 */
	protected int longitudeOfLastGridPoint = LONGITUDE_OF_LAST_GRID_POINT_EDEFAULT;

	/**
	 * The default value of the '{@link #getScanningMode() <em>Scanning Mode</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getScanningMode()
	 * @generated
	 * @ordered
	 */
	protected static final byte SCANNING_MODE_EDEFAULT = 0x00;

	/**
	 * The cached value of the '{@link #getScanningMode() <em>Scanning Mode</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getScanningMode()
	 * @generated
	 * @ordered
	 */
	protected byte scanningMode = SCANNING_MODE_EDEFAULT;

	/**
	 * The default value of the '{@link #getOrientationOfTheGrid() <em>Orientation Of The Grid</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getOrientationOfTheGrid()
	 * @generated
	 * @ordered
	 */
	protected static final int ORIENTATION_OF_THE_GRID_EDEFAULT = 0;

	/**
	 * The cached value of the '{@link #getOrientationOfTheGrid() <em>Orientation Of The Grid</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getOrientationOfTheGrid()
	 * @generated
	 * @ordered
	 */
	protected int orientationOfTheGrid = ORIENTATION_OF_THE_GRID_EDEFAULT;

	/**
	 * The default value of the '{@link #getLongitudinalDirectionGridLength() <em>Longitudinal Direction Grid Length</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getLongitudinalDirectionGridLength()
	 * @generated
	 * @ordered
	 */
	protected static final int LONGITUDINAL_DIRECTION_GRID_LENGTH_EDEFAULT = 0;

	/**
	 * The cached value of the '{@link #getLongitudinalDirectionGridLength() <em>Longitudinal Direction Grid Length</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getLongitudinalDirectionGridLength()
	 * @generated
	 * @ordered
	 */
	protected int longitudinalDirectionGridLength = LONGITUDINAL_DIRECTION_GRID_LENGTH_EDEFAULT;

	/**
	 * The default value of the '{@link #getLatitudinalDirectionGridLength() <em>Latitudinal Direction Grid Length</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getLatitudinalDirectionGridLength()
	 * @generated
	 * @ordered
	 */
	protected static final int LATITUDINAL_DIRECTION_GRID_LENGTH_EDEFAULT = 0;

	/**
	 * The cached value of the '{@link #getLatitudinalDirectionGridLength() <em>Latitudinal Direction Grid Length</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getLatitudinalDirectionGridLength()
	 * @generated
	 * @ordered
	 */
	protected int latitudinalDirectionGridLength = LATITUDINAL_DIRECTION_GRID_LENGTH_EDEFAULT;

	/**
	 * The default value of the '{@link #getListOfNumberOfPointsOffset() <em>List Of Number Of Points Offset</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getListOfNumberOfPointsOffset()
	 * @generated
	 * @ordered
	 */
	protected static final long LIST_OF_NUMBER_OF_POINTS_OFFSET_EDEFAULT = 0L;

	/**
	 * The cached value of the '{@link #getListOfNumberOfPointsOffset() <em>List Of Number Of Points Offset</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getListOfNumberOfPointsOffset()
	 * @generated
	 * @ordered
	 */
	protected long listOfNumberOfPointsOffset = LIST_OF_NUMBER_OF_POINTS_OFFSET_EDEFAULT;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected GridDefinitionTemplate310Impl() {
		super();
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	protected EClass eStaticClass() {
		return GridsPackage.Literals.GRID_DEFINITION_TEMPLATE310;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public int getNumberOfPointsAlongAParallel() {
		return numberOfPointsAlongAParallel;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setNumberOfPointsAlongAParallel(int newNumberOfPointsAlongAParallel) {
		int oldNumberOfPointsAlongAParallel = numberOfPointsAlongAParallel;
		numberOfPointsAlongAParallel = newNumberOfPointsAlongAParallel;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, GridsPackage.GRID_DEFINITION_TEMPLATE310__NUMBER_OF_POINTS_ALONG_APARALLEL, oldNumberOfPointsAlongAParallel, numberOfPointsAlongAParallel));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public int getNumberOfPointsAlongAMeridian() {
		return numberOfPointsAlongAMeridian;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setNumberOfPointsAlongAMeridian(int newNumberOfPointsAlongAMeridian) {
		int oldNumberOfPointsAlongAMeridian = numberOfPointsAlongAMeridian;
		numberOfPointsAlongAMeridian = newNumberOfPointsAlongAMeridian;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, GridsPackage.GRID_DEFINITION_TEMPLATE310__NUMBER_OF_POINTS_ALONG_AMERIDIAN, oldNumberOfPointsAlongAMeridian, numberOfPointsAlongAMeridian));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public int getLatitudeOfFirstGridPoint() {
		return latitudeOfFirstGridPoint;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setLatitudeOfFirstGridPoint(int newLatitudeOfFirstGridPoint) {
		int oldLatitudeOfFirstGridPoint = latitudeOfFirstGridPoint;
		latitudeOfFirstGridPoint = newLatitudeOfFirstGridPoint;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, GridsPackage.GRID_DEFINITION_TEMPLATE310__LATITUDE_OF_FIRST_GRID_POINT, oldLatitudeOfFirstGridPoint, latitudeOfFirstGridPoint));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public int getLongitudeOfFirstGridPoint() {
		return longitudeOfFirstGridPoint;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setLongitudeOfFirstGridPoint(int newLongitudeOfFirstGridPoint) {
		int oldLongitudeOfFirstGridPoint = longitudeOfFirstGridPoint;
		longitudeOfFirstGridPoint = newLongitudeOfFirstGridPoint;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, GridsPackage.GRID_DEFINITION_TEMPLATE310__LONGITUDE_OF_FIRST_GRID_POINT, oldLongitudeOfFirstGridPoint, longitudeOfFirstGridPoint));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public byte getResolutionAndComponentFlags() {
		return resolutionAndComponentFlags;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setResolutionAndComponentFlags(byte newResolutionAndComponentFlags) {
		byte oldResolutionAndComponentFlags = resolutionAndComponentFlags;
		resolutionAndComponentFlags = newResolutionAndComponentFlags;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, GridsPackage.GRID_DEFINITION_TEMPLATE310__RESOLUTION_AND_COMPONENT_FLAGS, oldResolutionAndComponentFlags, resolutionAndComponentFlags));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public int getLatitudeOfMercatorProjectionIntersectionWithEarth() {
		return latitudeOfMercatorProjectionIntersectionWithEarth;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setLatitudeOfMercatorProjectionIntersectionWithEarth(int newLatitudeOfMercatorProjectionIntersectionWithEarth) {
		int oldLatitudeOfMercatorProjectionIntersectionWithEarth = latitudeOfMercatorProjectionIntersectionWithEarth;
		latitudeOfMercatorProjectionIntersectionWithEarth = newLatitudeOfMercatorProjectionIntersectionWithEarth;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, GridsPackage.GRID_DEFINITION_TEMPLATE310__LATITUDE_OF_MERCATOR_PROJECTION_INTERSECTION_WITH_EARTH, oldLatitudeOfMercatorProjectionIntersectionWithEarth, latitudeOfMercatorProjectionIntersectionWithEarth));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public int getLatitudeOfLastGridPoint() {
		return latitudeOfLastGridPoint;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setLatitudeOfLastGridPoint(int newLatitudeOfLastGridPoint) {
		int oldLatitudeOfLastGridPoint = latitudeOfLastGridPoint;
		latitudeOfLastGridPoint = newLatitudeOfLastGridPoint;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, GridsPackage.GRID_DEFINITION_TEMPLATE310__LATITUDE_OF_LAST_GRID_POINT, oldLatitudeOfLastGridPoint, latitudeOfLastGridPoint));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public int getLongitudeOfLastGridPoint() {
		return longitudeOfLastGridPoint;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setLongitudeOfLastGridPoint(int newLongitudeOfLastGridPoint) {
		int oldLongitudeOfLastGridPoint = longitudeOfLastGridPoint;
		longitudeOfLastGridPoint = newLongitudeOfLastGridPoint;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, GridsPackage.GRID_DEFINITION_TEMPLATE310__LONGITUDE_OF_LAST_GRID_POINT, oldLongitudeOfLastGridPoint, longitudeOfLastGridPoint));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public byte getScanningMode() {
		return scanningMode;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setScanningMode(byte newScanningMode) {
		byte oldScanningMode = scanningMode;
		scanningMode = newScanningMode;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, GridsPackage.GRID_DEFINITION_TEMPLATE310__SCANNING_MODE, oldScanningMode, scanningMode));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public int getOrientationOfTheGrid() {
		return orientationOfTheGrid;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setOrientationOfTheGrid(int newOrientationOfTheGrid) {
		int oldOrientationOfTheGrid = orientationOfTheGrid;
		orientationOfTheGrid = newOrientationOfTheGrid;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, GridsPackage.GRID_DEFINITION_TEMPLATE310__ORIENTATION_OF_THE_GRID, oldOrientationOfTheGrid, orientationOfTheGrid));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public int getLongitudinalDirectionGridLength() {
		return longitudinalDirectionGridLength;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setLongitudinalDirectionGridLength(int newLongitudinalDirectionGridLength) {
		int oldLongitudinalDirectionGridLength = longitudinalDirectionGridLength;
		longitudinalDirectionGridLength = newLongitudinalDirectionGridLength;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, GridsPackage.GRID_DEFINITION_TEMPLATE310__LONGITUDINAL_DIRECTION_GRID_LENGTH, oldLongitudinalDirectionGridLength, longitudinalDirectionGridLength));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public int getLatitudinalDirectionGridLength() {
		return latitudinalDirectionGridLength;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setLatitudinalDirectionGridLength(int newLatitudinalDirectionGridLength) {
		int oldLatitudinalDirectionGridLength = latitudinalDirectionGridLength;
		latitudinalDirectionGridLength = newLatitudinalDirectionGridLength;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, GridsPackage.GRID_DEFINITION_TEMPLATE310__LATITUDINAL_DIRECTION_GRID_LENGTH, oldLatitudinalDirectionGridLength, latitudinalDirectionGridLength));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public long getListOfNumberOfPointsOffset() {
		return listOfNumberOfPointsOffset;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setListOfNumberOfPointsOffset(long newListOfNumberOfPointsOffset) {
		long oldListOfNumberOfPointsOffset = listOfNumberOfPointsOffset;
		listOfNumberOfPointsOffset = newListOfNumberOfPointsOffset;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, GridsPackage.GRID_DEFINITION_TEMPLATE310__LIST_OF_NUMBER_OF_POINTS_OFFSET, oldListOfNumberOfPointsOffset, listOfNumberOfPointsOffset));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Object eGet(int featureID, boolean resolve, boolean coreType) {
		switch (featureID) {
			case GridsPackage.GRID_DEFINITION_TEMPLATE310__NUMBER_OF_POINTS_ALONG_APARALLEL:
				return getNumberOfPointsAlongAParallel();
			case GridsPackage.GRID_DEFINITION_TEMPLATE310__NUMBER_OF_POINTS_ALONG_AMERIDIAN:
				return getNumberOfPointsAlongAMeridian();
			case GridsPackage.GRID_DEFINITION_TEMPLATE310__LATITUDE_OF_FIRST_GRID_POINT:
				return getLatitudeOfFirstGridPoint();
			case GridsPackage.GRID_DEFINITION_TEMPLATE310__LONGITUDE_OF_FIRST_GRID_POINT:
				return getLongitudeOfFirstGridPoint();
			case GridsPackage.GRID_DEFINITION_TEMPLATE310__RESOLUTION_AND_COMPONENT_FLAGS:
				return getResolutionAndComponentFlags();
			case GridsPackage.GRID_DEFINITION_TEMPLATE310__LATITUDE_OF_MERCATOR_PROJECTION_INTERSECTION_WITH_EARTH:
				return getLatitudeOfMercatorProjectionIntersectionWithEarth();
			case GridsPackage.GRID_DEFINITION_TEMPLATE310__LATITUDE_OF_LAST_GRID_POINT:
				return getLatitudeOfLastGridPoint();
			case GridsPackage.GRID_DEFINITION_TEMPLATE310__LONGITUDE_OF_LAST_GRID_POINT:
				return getLongitudeOfLastGridPoint();
			case GridsPackage.GRID_DEFINITION_TEMPLATE310__SCANNING_MODE:
				return getScanningMode();
			case GridsPackage.GRID_DEFINITION_TEMPLATE310__ORIENTATION_OF_THE_GRID:
				return getOrientationOfTheGrid();
			case GridsPackage.GRID_DEFINITION_TEMPLATE310__LONGITUDINAL_DIRECTION_GRID_LENGTH:
				return getLongitudinalDirectionGridLength();
			case GridsPackage.GRID_DEFINITION_TEMPLATE310__LATITUDINAL_DIRECTION_GRID_LENGTH:
				return getLatitudinalDirectionGridLength();
			case GridsPackage.GRID_DEFINITION_TEMPLATE310__LIST_OF_NUMBER_OF_POINTS_OFFSET:
				return getListOfNumberOfPointsOffset();
		}
		return super.eGet(featureID, resolve, coreType);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public void eSet(int featureID, Object newValue) {
		switch (featureID) {
			case GridsPackage.GRID_DEFINITION_TEMPLATE310__NUMBER_OF_POINTS_ALONG_APARALLEL:
				setNumberOfPointsAlongAParallel((Integer)newValue);
				return;
			case GridsPackage.GRID_DEFINITION_TEMPLATE310__NUMBER_OF_POINTS_ALONG_AMERIDIAN:
				setNumberOfPointsAlongAMeridian((Integer)newValue);
				return;
			case GridsPackage.GRID_DEFINITION_TEMPLATE310__LATITUDE_OF_FIRST_GRID_POINT:
				setLatitudeOfFirstGridPoint((Integer)newValue);
				return;
			case GridsPackage.GRID_DEFINITION_TEMPLATE310__LONGITUDE_OF_FIRST_GRID_POINT:
				setLongitudeOfFirstGridPoint((Integer)newValue);
				return;
			case GridsPackage.GRID_DEFINITION_TEMPLATE310__RESOLUTION_AND_COMPONENT_FLAGS:
				setResolutionAndComponentFlags((Byte)newValue);
				return;
			case GridsPackage.GRID_DEFINITION_TEMPLATE310__LATITUDE_OF_MERCATOR_PROJECTION_INTERSECTION_WITH_EARTH:
				setLatitudeOfMercatorProjectionIntersectionWithEarth((Integer)newValue);
				return;
			case GridsPackage.GRID_DEFINITION_TEMPLATE310__LATITUDE_OF_LAST_GRID_POINT:
				setLatitudeOfLastGridPoint((Integer)newValue);
				return;
			case GridsPackage.GRID_DEFINITION_TEMPLATE310__LONGITUDE_OF_LAST_GRID_POINT:
				setLongitudeOfLastGridPoint((Integer)newValue);
				return;
			case GridsPackage.GRID_DEFINITION_TEMPLATE310__SCANNING_MODE:
				setScanningMode((Byte)newValue);
				return;
			case GridsPackage.GRID_DEFINITION_TEMPLATE310__ORIENTATION_OF_THE_GRID:
				setOrientationOfTheGrid((Integer)newValue);
				return;
			case GridsPackage.GRID_DEFINITION_TEMPLATE310__LONGITUDINAL_DIRECTION_GRID_LENGTH:
				setLongitudinalDirectionGridLength((Integer)newValue);
				return;
			case GridsPackage.GRID_DEFINITION_TEMPLATE310__LATITUDINAL_DIRECTION_GRID_LENGTH:
				setLatitudinalDirectionGridLength((Integer)newValue);
				return;
			case GridsPackage.GRID_DEFINITION_TEMPLATE310__LIST_OF_NUMBER_OF_POINTS_OFFSET:
				setListOfNumberOfPointsOffset((Long)newValue);
				return;
		}
		super.eSet(featureID, newValue);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public void eUnset(int featureID) {
		switch (featureID) {
			case GridsPackage.GRID_DEFINITION_TEMPLATE310__NUMBER_OF_POINTS_ALONG_APARALLEL:
				setNumberOfPointsAlongAParallel(NUMBER_OF_POINTS_ALONG_APARALLEL_EDEFAULT);
				return;
			case GridsPackage.GRID_DEFINITION_TEMPLATE310__NUMBER_OF_POINTS_ALONG_AMERIDIAN:
				setNumberOfPointsAlongAMeridian(NUMBER_OF_POINTS_ALONG_AMERIDIAN_EDEFAULT);
				return;
			case GridsPackage.GRID_DEFINITION_TEMPLATE310__LATITUDE_OF_FIRST_GRID_POINT:
				setLatitudeOfFirstGridPoint(LATITUDE_OF_FIRST_GRID_POINT_EDEFAULT);
				return;
			case GridsPackage.GRID_DEFINITION_TEMPLATE310__LONGITUDE_OF_FIRST_GRID_POINT:
				setLongitudeOfFirstGridPoint(LONGITUDE_OF_FIRST_GRID_POINT_EDEFAULT);
				return;
			case GridsPackage.GRID_DEFINITION_TEMPLATE310__RESOLUTION_AND_COMPONENT_FLAGS:
				setResolutionAndComponentFlags(RESOLUTION_AND_COMPONENT_FLAGS_EDEFAULT);
				return;
			case GridsPackage.GRID_DEFINITION_TEMPLATE310__LATITUDE_OF_MERCATOR_PROJECTION_INTERSECTION_WITH_EARTH:
				setLatitudeOfMercatorProjectionIntersectionWithEarth(LATITUDE_OF_MERCATOR_PROJECTION_INTERSECTION_WITH_EARTH_EDEFAULT);
				return;
			case GridsPackage.GRID_DEFINITION_TEMPLATE310__LATITUDE_OF_LAST_GRID_POINT:
				setLatitudeOfLastGridPoint(LATITUDE_OF_LAST_GRID_POINT_EDEFAULT);
				return;
			case GridsPackage.GRID_DEFINITION_TEMPLATE310__LONGITUDE_OF_LAST_GRID_POINT:
				setLongitudeOfLastGridPoint(LONGITUDE_OF_LAST_GRID_POINT_EDEFAULT);
				return;
			case GridsPackage.GRID_DEFINITION_TEMPLATE310__SCANNING_MODE:
				setScanningMode(SCANNING_MODE_EDEFAULT);
				return;
			case GridsPackage.GRID_DEFINITION_TEMPLATE310__ORIENTATION_OF_THE_GRID:
				setOrientationOfTheGrid(ORIENTATION_OF_THE_GRID_EDEFAULT);
				return;
			case GridsPackage.GRID_DEFINITION_TEMPLATE310__LONGITUDINAL_DIRECTION_GRID_LENGTH:
				setLongitudinalDirectionGridLength(LONGITUDINAL_DIRECTION_GRID_LENGTH_EDEFAULT);
				return;
			case GridsPackage.GRID_DEFINITION_TEMPLATE310__LATITUDINAL_DIRECTION_GRID_LENGTH:
				setLatitudinalDirectionGridLength(LATITUDINAL_DIRECTION_GRID_LENGTH_EDEFAULT);
				return;
			case GridsPackage.GRID_DEFINITION_TEMPLATE310__LIST_OF_NUMBER_OF_POINTS_OFFSET:
				setListOfNumberOfPointsOffset(LIST_OF_NUMBER_OF_POINTS_OFFSET_EDEFAULT);
				return;
		}
		super.eUnset(featureID);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public boolean eIsSet(int featureID) {
		switch (featureID) {
			case GridsPackage.GRID_DEFINITION_TEMPLATE310__NUMBER_OF_POINTS_ALONG_APARALLEL:
				return numberOfPointsAlongAParallel != NUMBER_OF_POINTS_ALONG_APARALLEL_EDEFAULT;
			case GridsPackage.GRID_DEFINITION_TEMPLATE310__NUMBER_OF_POINTS_ALONG_AMERIDIAN:
				return numberOfPointsAlongAMeridian != NUMBER_OF_POINTS_ALONG_AMERIDIAN_EDEFAULT;
			case GridsPackage.GRID_DEFINITION_TEMPLATE310__LATITUDE_OF_FIRST_GRID_POINT:
				return latitudeOfFirstGridPoint != LATITUDE_OF_FIRST_GRID_POINT_EDEFAULT;
			case GridsPackage.GRID_DEFINITION_TEMPLATE310__LONGITUDE_OF_FIRST_GRID_POINT:
				return longitudeOfFirstGridPoint != LONGITUDE_OF_FIRST_GRID_POINT_EDEFAULT;
			case GridsPackage.GRID_DEFINITION_TEMPLATE310__RESOLUTION_AND_COMPONENT_FLAGS:
				return resolutionAndComponentFlags != RESOLUTION_AND_COMPONENT_FLAGS_EDEFAULT;
			case GridsPackage.GRID_DEFINITION_TEMPLATE310__LATITUDE_OF_MERCATOR_PROJECTION_INTERSECTION_WITH_EARTH:
				return latitudeOfMercatorProjectionIntersectionWithEarth != LATITUDE_OF_MERCATOR_PROJECTION_INTERSECTION_WITH_EARTH_EDEFAULT;
			case GridsPackage.GRID_DEFINITION_TEMPLATE310__LATITUDE_OF_LAST_GRID_POINT:
				return latitudeOfLastGridPoint != LATITUDE_OF_LAST_GRID_POINT_EDEFAULT;
			case GridsPackage.GRID_DEFINITION_TEMPLATE310__LONGITUDE_OF_LAST_GRID_POINT:
				return longitudeOfLastGridPoint != LONGITUDE_OF_LAST_GRID_POINT_EDEFAULT;
			case GridsPackage.GRID_DEFINITION_TEMPLATE310__SCANNING_MODE:
				return scanningMode != SCANNING_MODE_EDEFAULT;
			case GridsPackage.GRID_DEFINITION_TEMPLATE310__ORIENTATION_OF_THE_GRID:
				return orientationOfTheGrid != ORIENTATION_OF_THE_GRID_EDEFAULT;
			case GridsPackage.GRID_DEFINITION_TEMPLATE310__LONGITUDINAL_DIRECTION_GRID_LENGTH:
				return longitudinalDirectionGridLength != LONGITUDINAL_DIRECTION_GRID_LENGTH_EDEFAULT;
			case GridsPackage.GRID_DEFINITION_TEMPLATE310__LATITUDINAL_DIRECTION_GRID_LENGTH:
				return latitudinalDirectionGridLength != LATITUDINAL_DIRECTION_GRID_LENGTH_EDEFAULT;
			case GridsPackage.GRID_DEFINITION_TEMPLATE310__LIST_OF_NUMBER_OF_POINTS_OFFSET:
				return listOfNumberOfPointsOffset != LIST_OF_NUMBER_OF_POINTS_OFFSET_EDEFAULT;
		}
		return super.eIsSet(featureID);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public String toString() {
		if (eIsProxy()) return super.toString();

		StringBuffer result = new StringBuffer(super.toString());
		result.append(" (numberOfPointsAlongAParallel: "); //$NON-NLS-1$
		result.append(numberOfPointsAlongAParallel);
		result.append(", numberOfPointsAlongAMeridian: "); //$NON-NLS-1$
		result.append(numberOfPointsAlongAMeridian);
		result.append(", latitudeOfFirstGridPoint: "); //$NON-NLS-1$
		result.append(latitudeOfFirstGridPoint);
		result.append(", longitudeOfFirstGridPoint: "); //$NON-NLS-1$
		result.append(longitudeOfFirstGridPoint);
		result.append(", resolutionAndComponentFlags: "); //$NON-NLS-1$
		result.append(resolutionAndComponentFlags);
		result.append(", latitudeOfMercatorProjectionIntersectionWithEarth: "); //$NON-NLS-1$
		result.append(latitudeOfMercatorProjectionIntersectionWithEarth);
		result.append(", latitudeOfLastGridPoint: "); //$NON-NLS-1$
		result.append(latitudeOfLastGridPoint);
		result.append(", longitudeOfLastGridPoint: "); //$NON-NLS-1$
		result.append(longitudeOfLastGridPoint);
		result.append(", scanningMode: "); //$NON-NLS-1$
		result.append(scanningMode);
		result.append(", orientationOfTheGrid: "); //$NON-NLS-1$
		result.append(orientationOfTheGrid);
		result.append(", longitudinalDirectionGridLength: "); //$NON-NLS-1$
		result.append(longitudinalDirectionGridLength);
		result.append(", latitudinalDirectionGridLength: "); //$NON-NLS-1$
		result.append(latitudinalDirectionGridLength);
		result.append(", listOfNumberOfPointsOffset: "); //$NON-NLS-1$
		result.append(listOfNumberOfPointsOffset);
		result.append(')');
		return result.toString();
	}

	/* (non-Javadoc)
	 * @see org.mro.grib.model.files.secondEdition.grids.impl.EarthShapeGridDefinitionImpl#initialise(java.nio.ByteBuffer)
	 */
	@Override
	public void initialise(ByteBuffer buffer) {
		super.initialise(buffer);
		numberOfPointsAlongAParallel = buffer.getInt();
		numberOfPointsAlongAMeridian = buffer.getInt();
		latitudeOfFirstGridPoint = buffer.getInt();
		longitudeOfFirstGridPoint = buffer.getInt();
		resolutionAndComponentFlags = buffer.get();
		latitudeOfMercatorProjectionIntersectionWithEarth = buffer.getInt();
		latitudeOfLastGridPoint = buffer.getInt();
		longitudeOfLastGridPoint = buffer.getInt();
		scanningMode = buffer.get();
		orientationOfTheGrid = buffer.getInt();
		longitudinalDirectionGridLength = buffer.getInt();
		latitudinalDirectionGridLength = buffer.getInt();
		listOfNumberOfPointsOffset = buffer.position();
	}

} //GridDefinitionTemplate310Impl
